// 队列-以循环队列为例
#ifndef QUEUE_H
#define QUEUE_H

#define MAX_SIZE 1000

/// @brief 循环队列结构体
typedef struct
{
	int front, rear;	// 头尾指针（下标），front指向队头元素，rear指向队尾元素的后一个
	int data[MAX_SIZE]; // 元素存放数组
} Queue;

/// @brief 创建一个循环队列
/// @return 循环队列对象指针
Queue *createQueue();

/// @brief 获取队列长度
/// @param queue 传入队列指针
/// @return 队列长度
int queueLength(Queue *);

/// @brief 判断队列是否空
/// @param queue 传入队列指针
/// @return 返回队列是否为空
int queueEmpty(Queue *);

/// @brief 判断队列是否满
/// @param queue 传入队列指针
/// @return 返回队列是否满
int queueFull(Queue *);

/// @brief 元素进队列
/// @param queue 传入队列指针
/// @param data 进入队列的元素
void enterQueue(Queue *, int);

/// @brief 元素出队列
/// @param queue 传入队列指针
/// @return 出队列的元素
int deQueue(Queue *);

#include "./queue.c"

#endif